package com.itheima.io1.myzipstream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

/**
 * @author zhangbaiyan
 * @date 2024-09-22 14:13
 * @description:
 * @version:
 */
public class test1 {
    public static void main(String[] args) throws IOException {
        File src = new File("C:\\Users\\17685\\Desktop\\简历\\das.zip");
        File dest = new File("C:\\Users\\17685\\Desktop\\新建文件夹");
        unZip(src, dest);


    }

    //定义一个方法用来解压
    public static void unZip(File src, File dest) throws IOException {
        //解压的本质:把压缩包里面的每一个文件或者文件夹读取出来按照层级拷贝到目的当中

        //创建一个解压流来读取压缩包中的数据
        ZipInputStream zup = new ZipInputStream(new FileInputStream(src));
        //要先获取压缩包里面的每一个zipentry对象

        //表示但钱在压缩包中获取到的文件或者文件夹
        ZipEntry entry;
        while ((entry = zup.getNextEntry()) != null) {
            System.out.println(entry.toString());
            //判断当前压缩包中的文件或者文件夹是否是文件夹
            if (entry.isDirectory()) {
                //创建一个文件夹:
                new File(dest, entry.getName()).mkdirs();
            } else {
                //创建一个文件
                FileOutputStream fos = new FileOutputStream(new File(dest, entry.getName()));
                int b;
                while ((b = zup.read()) != -1) {
                       //把压缩包中的文件内容写到目的文件夹中
                    fos.write(b);
                }
                fos.close();
                //表示在压缩包中的一个文件处理完毕了
                zup.closeEntry();
            }
        }
    }
}
